package com.zyh.scs.common.core.exception;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

/**
 * @author hezhao
 */
@Getter
@NoArgsConstructor
@AllArgsConstructor
public enum OpenResponseCode {
    /**
     * 请求返回值
     */
    //空白错误
    SUCCESS(0, "操作成功"),
    FAILED(1, "操作失败"),
    NO_ACCESS(2, "没有权限"),
    EXIST(3, "数据已存在，不可重复提交"),
    UNDERSTOCK(4, "库存不足"),
    SOLD_OUT(5, "商品不可售"),
    UN_EXIST(6, "数据不存在，操作失败"),
    MANY_TO_ONE(7, "查询一条数据，实际查询到多条"),
    CODE_ERROR(8, "验证码不正确"),
    FREQUENTLY(9, "操作太频繁"),
    COPY_ERROR(10, "对象复制异常,请联系工作人员"),
    LOGIN_TIMEOUT(401, "登录凭证失效"),
    TOKEN_EXPRIED(402, "登录失效，请重新登录"),

    UNKNOWN_ERROR(999, "获取数据失败"),
    EXCEPTION(1000, "未知异常"),
    ILLEGAL_ARGUMENT(1001, "请求参数异常"),
    BLANK(10011, ""),

    API_APP_KEY(7000, "appKey 错误"),
    API_NETWORK(7001, "网络异常"),
    API_APP_SIGN(7002, "签名错误"),
    USER_IS_NOT_EXIST(7003, "用户不存在"),
    PASSWORD_IS_NULL(7004, "密码为空"),
    PASSWORD_IS_ERROR(7005, "密码错误"),
    PARAM_IS_EMPTY(7006, "更新内容为空"),
    MOBIE_IS_BIND(7007, "手机号已绑定其他账号"),
    MOBIE_IS_INCONSISTENT(7008, "未绑定手机号"),
    USER_IS_EXIST(7009, "用户已存在"),
    MOBILE_IS_NULL(7010, "手机号不能为空"),
    LOGIN_ERROR_TIME_ORVER_LIMIT(7011, "登录错误次数超限制了"),
    SMS_TIME_ORVER_LIMIT(7012, "操作过于频繁，请1小时后再试"),
    USERNAME_IS_EXIST(7013, "用户名已存在"),
    USER_IS_LOGOFF(7014, "用户已注销"),
    FILE_IS_TOO_BIG(7015, "文件大小需要在20-30k"),
    FACE_VERYFY_TIME_ORVER_LIMIT(7016, "一个月内人脸数据更新次数超限制了"),
    NOT_REAL_NAME_AUTH(7017, "用户未实名认证"),
    MOBILE_NUMBER_INCORRECT_FORMAT(7018, "手机号格式不正确"),
    PASSWORD_INCORRECT_FORMAT(7019, "请输入6-16位字母与数字组合的密码"),
    SMS_ERROR_TIME_ORVER_LIMIT(7020, "很抱歉，您今日验证码失败次数已达10次，请明日再登"),
    PASSWORD_ERROR_TIME_ORVER_LIMIT(7021, "很抱歉，您今日登录失败次数已达10次，请明日再登"),
    FILEKEY_IS_NOT_EXIST(7022, "文件key不能为空"),

    PAYCONTRACT_IS_NULL(7023, "用户还未签约"),
    GET_PAYCONTRACT_ERROR(7024, "查询用户签约信息失败"),
    DELETE_CONTRACT_PARAM_ERROR(7025, "未查到用户签约信息"),
    USER_STATION_IS_NOT_EXIST(7026, "用户未收藏该站点"),
    USER_UNFINISHED(8001, "用户行程中，不能解约支付方式"),
    USER_ROUTE_IS_NOT_EXIST(7027, "用户未收藏该线路"),
    USER_CONTRACT_FAIL(7028, "签约失败"),
    USER_USERAUTH_FAIL(7029, "实名认证失败"),
    UNIONPAY_ONLY_SUPPORT_ID_AUTH(7030, "云闪付目前只支持身份证认证"),
    GET_ACCESSTOKEN_ERROR(7031, "获取accesstoken失败"),
    SYS_PASSWORD_INCORRECT_FORMAT(7032, "请输入不少于12位的包含大小字母、数字和特殊字符组合的密码"),
    //itp用户黑名单
    USER_BLACKLIST(2007, "您的账号存在异常，暂不能操作"),
    WECHAT_USER_NOT_EXIST(20001, "微信未注册"),
    //
    DELETED_FILED_HAS_UNPAY(10024, "不支持操作,存在待支付的订单"),
    DELETED_FILED_TICKET_UNUSE(10025, "不支持操作,存在未使用车票"),
    IF_DELETE(10026, "删除后不可恢复,是否删除?"),
    EXPORT(10027, "文件导出失败"),
    USER_JOB_NUMBER_IS_EXIST(10028, "该人员账户信息已存在，无法重复添加,请核查"),
    USER_PHONE_IS_EXIST(10029, "该手机号已存在"),
    USER_NOT_IS_EXIST(10030, "没有用户数据"),
    REPEATED_RECHARGE(10031, "2分钟内重复相同充值"),
    FILE_UPLOAD(10032, "文件上传失败"),
    DEDUCTION(10033, "当前余额不足扣款金额"),
    USER_NO_EXIST(10034, "用户不存在"),
    PASSWORD_ERROR(10035, "原密码和新密码不相同"),
    GREATER_THAN(10036, "批量充值金额大于10000"),
    TWO_DECIMAL_PLACES(10037, "批量充值金额保留两位小数点"),
    UNABLE_TO_RECHARGE(10038, "充值失败,该账号或该账号下账户已冻结/禁用"),
    DEDUCTION_ZERO(10039, "退款金额应大于0小于10000"),
    DEDUCTION_TWO(10040, "退款金额小数最多两位"),
    ROLE_IS(10041, "该账号已经添加了该权限,请忽重复添加"),
    LOCK_TO(10042, "该账号已经禁用"),
    DEDUCTION_LOCK(10043, "无法扣款,该账号或该账号下账户已冻结/禁用"),
    DEPT_IS_NOT(10044, "部门不存在"),
    USERID_TYPE_FAIL(10045, "用户id格式错误"),
    GREATER_THAN_ZERO(10046, "充值金额不能为负数"),
    USER_NAME_IS_EXIST(10047, "系统内已存在该用户名称，如仍需添加，请进行区分，如：张三2"),
    TIME_FAIL(10048, "时间格式有误"),
    ADMIN_IS_FAIL(10049, "不能删除admin"),
    JD_USER_NULL(10050, "接收下单通知（跳转商户收银台） >>> 用户不存在"),
    JD_USER_MUCH(10051, "接收下单通知（跳转商户收银台） >>> 存在多条用户"),
    JD_USER_LOCK(10052, "接收下单通知（跳转商户收银台） >>> 该账户被冻结"),
    JD_USER_CARD_LOCK(10053, "接收下单通知（跳转商户收银台） >>> 该账户餐卡账户被冻结"),
    JD_USER_CASH_LOCK(10054, "接收下单通知（跳转商户收银台） >>> 该账户现金账户被冻结"),

    /**
     * 主题巴士核销工具 状态码
     */
    INVALID_QR_CODE(1001, "无效二维码"),

    NOT_MATCH_QR(1002, "无效二维码");

    private int code;
    private String description;

    public static OpenResponseCode getByCode(int code) {
        OpenResponseCode[] list = OpenResponseCode.values();
        for (OpenResponseCode entity : list) {
            if (entity.getCode() == code) {
                return entity;
            }
        }
        return null;
    }
}
																														
